﻿using System;
using System.Collections.Generic;
using System.Net.Mail;
using KillBill.Business.Entities;
using KillBill.Business.Modules.Administration;
using KillBill.Services.DTO;

namespace KillBill.Business.Modules.Products
{
    public class ProductOrders
    {
        public KillBillDTO  SendMailPurchaseOrder(Product product)
        {
            var outDto = new KillBillDTO();
            var administrationManager  = new AdministrationManager();
            var allParameters = administrationManager.GetParameters().Parameters;
            var parameters = new Dictionary<string, Parameter>();
            foreach (var parameter in allParameters)
            {
                parameters.Add(parameter.ParameterID, parameter);   
            }
            try
            {
                var message = new MailMessage();
                message.From = new MailAddress(parameters["AUTO_ORDER_MAIL"].Value, parameters["COMPANY"].Value);
                message.To.Add(new MailAddress(product.Provider.Person.Email));
                message.Subject = "Pedido: " + product.Name;
                message.CC.Add(new MailAddress(parameters["ORDER_CONTACT_MAIL"].Value));

                message.Body = product.Provider.Name + ",\n\n" +
                               "Se le solicita el envío de " + (product.StockMax - product.Stock) +
                               " del producto " + product.Name + ".\n\n" +
                               "Cualquier duda por favor ponerse en contacto con el personal encargado de compras de la empresa " +
                               parameters["ORDER_CONTACT_PHONE"] +
                               "\n\nAtentamente,\n" + parameters["COMPANY"].Value +
                               "\n\n\n________________________________________________________\n" +
                               "Este mail fue generado automáticamente por el sistema de Facturación KillBill, por favor no responder a esta dirección";

                var smtp = new SmtpClient();
                smtp.Host = parameters["MAIL_SERVER"].Value;
                smtp.Credentials = new System.Net.NetworkCredential(parameters["AUTO_MAIL_USER"].Value, parameters["AUTO_MAIL_PASS"].Value);
                smtp.Send(message);
                outDto.Success = true;
                outDto.Messages.Add("Mensaje de pedido enviado con exito");
            }
            catch (Exception ex)
            {
                outDto.Success = false;
                outDto.Messages.Clear();
                outDto.Messages.Add("Error en el envío de mensajes");
                outDto.Messages.Add(ex.Message);
            }
            return outDto;

        }
    }
}
